package everyday;

/**
 * @author zhangmin
 * @create 2022-04-25 13:13
 *
 * 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn ）。
 *
 * 快速幂：
 * 在n的二进制表示中为1的位置可以表示幂次
 */
public class myPow50 {
    public double myPow(double x, int n) {
        if (x==0) return 0;
        long b=n;
        if (b<0){
            b=-b;
            x=1/x;
        }
        double res=1.0;
        while (b>0){
            if ((b&1)==1) res*=x;
            x*=x;
            b>>=1;
        }
        return res;
    }
}
